This application is a continuation of U.S. patent application Ser. No. 14/085,668, filed Nov. 20, 2013, now U.S. Pat. No. 9,880,933, which is hereby incorporated by reference herein in its entirety.
Persistent data storage is in high demand. Different organizations, companies, and individuals collect, transmit, and manage all kinds of data that needs to be stored. In order to more efficiently create or access stored data, different data storage systems may be implemented. Database systems, for example, provide data storage that may allow for data to be efficiently and consistently accessed and changed using various format and storage schemes.
Access requests for data stored in data storage systems may be processed differently. Some data storage systems may implement a buffer cache in order to more efficiently process access requests. For example, a buffer cache may maintain a copy of different portions of the data stored in a distributed storage system in persistent storage devices, such as disk storage. When writes to the data stored in the distributed storage system are to be performed, a copy of the data modified by the write may be stored in the buffer cache as well as the disk storage. Buffer caches are typically implemented in system memory that provides quick access times for reading and writing data. Future read requests for the data may be serviced using data stored in the buffer cache, without waiting for the read request to be serviced by the significantly slower persistent storage. Thus, storing more data in the buffer cache may reduce the need to perform more costly storage operations to read data from persistent storage.
System memory, however, is a scare resource when compared to persistent data storage. Generally, the buffer cache for storage clients storing data for a storage system may be limited to the system memory available to the device implementing the storage client, restricting the amount of data a buffer cache may contain. Yet, increasing the buffer cache size for storage clients may increase the operational and resource costs for storage clients, which may in turn reduce the effectiveness of implementing a buffer cache for storage clients.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). The words “include,” “including,” and “includes” indicate open-ended relationships and therefore mean including, but not limited to. Similarly, the words “have,” “having,” and “has” also indicate open-ended relationships, and thus mean having, but not limited to. The terms “first,” “second,” “third,” and so forth as used herein are used as labels for nouns that they precede, and do not imply any type of ordering (e.g., spatial, temporal, logical, etc.) unless such an ordering is otherwise explicitly indicated.
Various components may be described as “configured to” perform a task or tasks. In such contexts, “configured to” is a broad recitation generally meaning “having structure that” performs the task or tasks during operation. As such, the component can be configured to perform the task even when the component is not currently performing that task (e.g., a computer system may be configured to perform operations even when the operations are not currently being performed). In some contexts, “configured to” may be a broad recitation of structure generally meaning “having circuitry that” performs the task or tasks during operation. As such, the component can be configured to perform the task even when the component is not currently on. In general, the circuitry that forms the structure corresponding to “configured to” may include hardware circuits.
Various components may be described as performing a task or tasks, for convenience in the description. Such descriptions should be interpreted as including the phrase “configured to.” Reciting a component that is configured to perform one or more tasks is expressly intended not to invoke 35 U.S.C. § 112, paragraph six, interpretation for that component.
“Based On.” As used herein, this term is used to describe one or more factors that affect a determination. This term does not foreclose additional factors that may affect a determination. That is, a determination may be solely based on those factors or based, at least in part, on those factors. Consider the phrase “determine A based on B.” While B may be a factor that affects the determination of A, such a phrase does not foreclose the determination of A from also being based on C. In other instances, A may be determined based solely on B.
The scope of the present disclosure includes any feature or combination of features disclosed herein (either explicitly or implicitly), or any generalization thereof, whether or not it mitigates any or all of the problems addressed herein. Accordingly, new claims may be formulated during prosecution of this application (or an application claiming priority thereto) to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the appended claims.